/* ======================================================= */
/* parser pour l'analyse syntaxique du protocole external */
/* author Mathieu Barbin                                  */
/* version 1.1.*                                          */
/* L'interet est que comme cette analyse se produit souvent
   au moins on est sur qu'elle est optimisee */
/* ====================================================== */

%{
  open BplibTypes
%}

%token <string> IDENT
%token <string> STRING
%token <int> CODE
%token <string> CODE01

%type <BplibTypes.protocole_external> protocole

%start protocole

%%


protocole :
 | methode_option code_option args input_option
     {
       {
	 ex_methode = $1;
	 ex_code = $2;
	 ex_args = $3;
	 ex_input = $4
       }
     }
;

methode_option :
 | IDENT { Some $1 }
 |       { None }
;

code_option :
 | CODE { Some $1 }
 |      { None }
;

args :
 |              { [] }
 | STRING args  { $1::$2 }
;

input_option :
  | CODE01 { $1 }
  |        { "" }
;
